<?php

require_once('../krn_table.php');
require_once('../commons_constantes.php');
require_once('../commons_utils.php');

tableDefinition
	(TABLE_DEFINITION
	,'tblAuth'
	,WEDDING_DBNAME
	,'AUTHENTIFICATION'
	,array
		('ID'
		,'LOGIN'
		,'DATE_INSERTION'
		)
	);
	
/***********************************************************************************************************
 * Définition des fonctions d'interactions
 ***********************************************************************************************************/

/**
 * Permet d'ajouter une authentification dans la base de données
 * @param login Login de l'utilisateur conecté sur erget
 * @return int : identifiant de l'authentification effectuée
 */
function ajouterAuth($login) 
{
	$dateInsert = gmdate('c');
	$idInserted = insert
					('tblAuth'
					,array
						('LOGIN'			=> '?'
						,'DATE_INSERTION'	=> '?'
						)
					,array
						($login
						,$dateInsert
						)
					);
	return $idInserted;
}

/**
 * Retourne le tableau associatif de l'authentification d'identifiant $idAuth.<br />
 * Retourne un tableau vide si l'authentification d'identifiant $idAuth n'existe pas
 * @param $idAuth identifiant du ou de la mariée
 * @return array : un tableau vide ou associatif nom de colonne - valeur
 * @throws Exception : code 406 (plusieurs ressources)
 */
function getAuth($idAuth) {
	$auth = select('tblAuth', '*', 'WHERE ID = ?', array($idAuth));
	if (count($auth) > 1) {
		throw new Exception('Plusieurs authentifications d\'identifiant '.$idAuth.' ont été retournés', ERR_NOT_ACCEPTABLE);
	} elseif (count($auth) == 1) {
		return $auth[0];
	}
	return $auth; 
}

/**
 * Retourne la liste des authentifications ayant eu lieu avec le login $login.<br />
 * Retourne un tableau vide si aucune authentification n'a jamais eu lieu avec le login $login
 * @param $login login dont on cherche toutes les authentifications
 * @return array : liste vide ou liste des authentifications pour le login $login
 */
function getAuthByLogin($login) {
	$selQuery = 'SELECT * FROM '.tableNameGet('tblAuth').' WHERE LOGIN=? ORDER BY DATE_INSERTION DESC';
	$bindings = array($login);
	$listAuth = executeSelectQuery('tblAuth', $selQuery, $bindings);
	return $listAuth;
}

/**
 * Retourne la dernière authentification ayant eu lieu avec le login $login<br />
 * Retourne null si aucune authentification n'a jamais eu lieu avec le login $login
 * @param $login login pour lequel on cherche la dernière authentification
 * @return array or null.
 */
function getLastAuthByLogin($login) {
	$listAuth = getAuthByLogin($login);
	if (count($listAuth) != 0) {
		return $listAuth[0];
	}
	return null;
}
